--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / frontend / components / interfaces / ImportInterfacesModal.vue
Displaying Raw • Download
meshchatx/src/frontend/components/interfaces/ImportInterfacesModal.vue 7d7cd7d48701e74ab38cef0db1eca1b0cd23cf87 (7d7cd7d4) Text, 12.52 KB
Tb4b4b4<Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isShowingTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity flex items-center justify-center"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex w-full h-full p-4 overflow-y-auto"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-click-outsideTff7b72=Ta5d6ff"Te6edf3dismissTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"my-auto mx-auto w-full bg-white dark:bg-zinc-900 rounded-lg shadow-xl max-w-2xl"
Tb4b4b4>
T8b949e<!-- title -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-4 border-b dark:border-zinc-700"Tb4b4b4>
Tb4b4b4<Tff7b72h3 Te6edf3classTff7b72=Ta5d6ff"text-lg font-semibold dark:text-white"Tb4b4b4>Import InterfacesTb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- content -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"divide-y dark:divide-zinc-700"Tb4b4b4>
T8b949e<!-- file input -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-2"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3refTff7b72=Ta5d6ff"import-interfaces-file-input"
Te6edf3typeTff7b72=Ta5d6ff"file"
Te6edf3acceptTff7b72=Ta5d6ff"*"
Te6edf3classTff7b72=Ta5d6ff"w-full text-sm text-gray-500 dark:text-zinc-400"
Tb4b4b4@Te6edf3changeTff7b72=Ta5d6ff"Te6edf3onFileSelectedTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3selectedFileTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"mt-2 text-sm text-gray-700 dark:text-zinc-200"Tb4b4b4>
Tb4b4b4<Tff7b72ul Te6edf3classTff7b72=Ta5d6ff"list-disc list-inside"Tb4b4b4>
Tb4b4b4<Tff7b72liTb4b4b4>You can import interfaces from a ~/.reticulum/config file.Tb4b4b4<Tb4b4b4/Tff7b72liTb4b4b4>
Tb4b4b4<Tff7b72liTb4b4b4>You can import interfaces from an exported interfaces file.Tb4b4b4<Tb4b4b4/Tff7b72liTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ulTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- select interfaces -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3importableInterfacesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"divide-y dark:divide-zinc-700"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex p-2"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"my-auto mr-auto text-sm font-medium text-gray-700 dark:text-zinc-200"Tb4b4b4>
Select Interfaces to Import
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"my-auto space-x-2"Tb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3classTff7b72=Ta5d6ff"text-sm text-blue-500 hover:underline" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3selectAllInterfacesTa5d6ff"Tb4b4b4>
Select All
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3classTff7b72=Ta5d6ff"text-sm text-blue-500 hover:underline" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3deselectAllInterfacesTa5d6ff"Tb4b4b4>
Deselect All
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"bg-gray-200 p-2 space-y-2 max-h-80 overflow-y-auto dark:bg-zinc-800"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3iface Tff7b72in Te6edf3importableInterfacesTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3ifaceTb4b4b4.Te6edf3nameTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"bg-white cursor-pointer flex items-center p-2 border rounded shadow dark:bg-zinc-900 dark:border-zinc-700"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"mr-auto text-sm flex-1" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3toggleSelectedInterfaceTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3nameTb4b4b4)Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-semibold text-gray-700 dark:text-zinc-100"Tb4b4b4>Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3name Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-500 dark:text-zinc-100"Tb4b4b4>
T8b949e<!-- auto interface -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff'AutoInterface'Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>Ethernet and WiFiTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- tcp client interface -->
Tb4b4b4<Tff7b72div Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff'TCPClientInterface'Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3target_host Tff7b72}}:Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3target_port Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- tcp server interface -->
Tb4b4b4<Tff7b72div Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff'TCPServerInterface'Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3listen_ip Tff7b72}}:Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3listen_port Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- udp interface -->
Tb4b4b4<Tff7b72div Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff'UDPInterface'Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>Listen: Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3listen_ip Tff7b72}}:Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3listen_port Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>Forward: Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3forward_ip Tff7b72}}:Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3forward_port Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- rnode interface details -->
Tb4b4b4<Tff7b72div Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff'RNodeInterface'Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>Port: Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3port Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>Frequency: Tff7b72{{ Te6edf3formatFrequencyTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3frequencyTb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>Bandwidth: Tff7b72{{ Te6edf3formatFrequencyTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3bandwidthTb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>Spreading Factor: Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3spreadingfactor Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>Coding Rate: Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3codingrate Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>Transmit Power: Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3txpower Tff7b72}}dBmTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- other interface types -->
Tb4b4b4<Tff7b72div Te6edf3v-elseTb4b4b4>Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div @Te6edf3click.Te6edf3stopTb4b4b4>
Tb4b4b4<Tff7b72Toggle
Tb4b4b4:Te6edf3idTff7b72=Ta5d6ff"Ta5d6ff`Ta5d6ffimport-interface-Tffd700${Te6edf3ifaceTb4b4b4.Te6edf3nameTffd700}Ta5d6ff`Ta5d6ff"
Tb4b4b4:Te6edf3model-valueTff7b72=Ta5d6ff"Te6edf3selectedInterfacesTb4b4b4.Te6edf3includesTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3nameTb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3updateTb4b4b4:Te6edf3model-valueTff7b72=Ta5d6ff"
Tb4b4b4(Te6edf3valueTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3value Tff7b72&& Tff7b72!Te6edf3selectedInterfacesTb4b4b4.Te6edf3includesTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3nameTb4b4b4)Tb4b4b4)
Te6edf3selectInterfaceTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3nameTb4b4b4)Tb4b4b4;
Tff7b72else Tff7b72if Tb4b4b4(Tff7b72!Te6edf3value Tff7b72&& Te6edf3selectedInterfacesTb4b4b4.Te6edf3includesTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3nameTb4b4b4)Tb4b4b4)
Te6edf3deselectInterfaceTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3nameTb4b4b4)Tb4b4b4;
Tb4b4b4}
Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- actions -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-4 border-t dark:border-zinc-700 flex justify-end space-x-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 dark:bg-zinc-800 dark:text-zinc-200 dark:border-zinc-600 dark:hover:bg-zinc-700"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3dismissTa5d6ff"
Tb4b4b4>
Cancel
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"px-4 py-2 text-sm font-medium text-white bg-blue-600 rounded-md hover:bg-blue-700 dark:bg-blue-700 dark:hover:bg-blue-600"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3importSelectedInterfacesTa5d6ff"
Tb4b4b4>
Import Selected
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72scriptTb4b4b4>
Tff7b72import Te6edf3DialogUtils Tff7b72from Ta5d6ff"../../js/DialogUtils"Tb4b4b4;
Tff7b72import Te6edf3Utils Tff7b72from Ta5d6ff"../../js/Utils"Tb4b4b4;
Tff7b72import Te6edf3Toggle Tff7b72from Ta5d6ff"../forms/Toggle.vue"Tb4b4b4;
Tff7b72export Tff7b72default Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"ImportInterfacesModal"Tb4b4b4,
Te6edf3componentsTff7b72: Tb4b4b4{
Te6edf3ToggleTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3emitsTff7b72: Tb4b4b4[Ta5d6ff"dismissed"Tb4b4b4]Tb4b4b4,
Te6edf3dataTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3isShowingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3selectedFileTff7b72: Tff7b72nullTb4b4b4,
Te6edf3importableInterfacesTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3selectedInterfacesTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3methodsTff7b72: Tb4b4b4{
Te6edf3showTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isShowing Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectedFile Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3importableInterfaces Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectedInterfaces Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3dismissTb4b4b4(Te6edf3result Tff7b72= Tff7b72falseTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isShowing Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72const Te6edf3imported Tff7b72= Te6edf3result Tff7b72=== Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$emitTb4b4b4(Ta5d6ff"dismissed"Tb4b4b4, Te6edf3importedTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3clearSelectedFileTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedFile Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4[Ta5d6ff"import-interfaces-file-input"Tb4b4b4]Tb4b4b4.Te6edf3value Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3onFileSelectedTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
T8b949e// get selected file
Tff7b72const Te6edf3file Tff7b72= Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3filesTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3fileTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
T8b949e// update ui
Tff7b72thisTb4b4b4.Te6edf3selectedFile Tff7b72= Te6edf3fileTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3importableInterfaces Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectedInterfaces Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72try Tb4b4b4{
T8b949e// fetch preview of interfaces to import
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/reticulum/interfaces/import-preview"Tb4b4b4, Tb4b4b4{
Te6edf3configTff7b72: Tff7b72await Te6edf3fileTb4b4b4.Te6edf3textTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
T8b949e// ensure there are some interfaces available to import
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3interfaces Tff7b72|| Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3interfacesTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3clearSelectedFileTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.no_interfaces_found_config"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
T8b949e// update ui
Tff7b72thisTb4b4b4.Te6edf3importableInterfaces Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3interfacesTb4b4b4;
T8b949e// auto select all interfaces
Tff7b72thisTb4b4b4.Te6edf3selectAllInterfacesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3clearSelectedFileTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.failed_parse_config"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3isInterfaceSelectedTb4b4b4(Te6edf3nameTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3selectedInterfacesTb4b4b4.Te6edf3includesTb4b4b4(Te6edf3nameTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3selectInterfaceTb4b4b4(Te6edf3nameTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isInterfaceSelectedTb4b4b4(Te6edf3nameTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedInterfacesTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3nameTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3deselectInterfaceTb4b4b4(Te6edf3nameTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedInterfaces Tff7b72= Tff7b72thisTb4b4b4.Te6edf3selectedInterfacesTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3selectedInterfaceNameTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72return Te6edf3selectedInterfaceName Tff7b72!== Te6edf3nameTb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3toggleSelectedInterfaceTb4b4b4(Te6edf3nameTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isInterfaceSelectedTb4b4b4(Te6edf3nameTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3deselectInterfaceTb4b4b4(Te6edf3nameTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectInterfaceTb4b4b4(Te6edf3nameTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3selectAllInterfacesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedInterfaces Tff7b72= Tff7b72thisTb4b4b4.Te6edf3importableInterfacesTb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3iTb4b4b4) Tb4b4b4=> Te6edf3iTb4b4b4.Te6edf3nameTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3deselectAllInterfacesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedInterfaces Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3importSelectedInterfacesTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// ensure user selected a file to import from
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedFileTb4b4b4) Tb4b4b4{
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.select_config_file"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
T8b949e// ensure user selected some interfaces
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedInterfacesTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.select_at_least_one"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
T8b949e// import interfaces
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/reticulum/interfaces/import"Tb4b4b4, Tb4b4b4{
Te6edf3configTff7b72: Tff7b72await Tff7b72thisTb4b4b4.Te6edf3selectedFileTb4b4b4.Te6edf3textTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3selected_interface_namesTff7b72: Tff7b72thisTb4b4b4.Te6edf3selectedInterfacesTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
T8b949e// dismiss modal
Tff7b72thisTb4b4b4.Te6edf3dismissTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
T8b949e// tell user interfaces were imported
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.import_success"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3message Tff7b72= Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.failed_import_all"Tb4b4b4)Tb4b4b4;
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Te6edf3messageTb4b4b4)Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3formatFrequencyTb4b4b4(Te6edf3hzTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3UtilsTb4b4b4.Te6edf3formatFrequencyTb4b4b4(Te6edf3hzTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4<Tb4b4b4/Tff7b72scriptTb4b4b4>
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────